package com.web.kdl.service.excel;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @Author： shulibin
 * @Date： 2025/8/25 16:08
 * @Describe：
 */
public class AutoIncrementIdConverter implements Converter<Long> {

    // 使用 AtomicInteger 保证线程安全的自增
    private final AtomicCounter counter = new AtomicCounter();

    // 在写入Excel时（导出）会调用此方法
    public WriteCellData<?> convertToExcelData(Long value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        // 忽略传入的 value，直接返回自增后的值
        return new WriteCellData(String.valueOf(counter.getAndIncrement()));
    }

    // 可以省略其他方法，如果不需要从Excel读入(导入)的逻辑
    public Long convertToJavaData(Long value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        return value;
    }

    // 一个简单的线程安全计数器
    private static class AtomicCounter {
        private final AtomicInteger count = new AtomicInteger(1);
        public long getAndIncrement() {
            return count.getAndIncrement();
        }
    }
}